[レポート]ChatGPTに内製エンジンのシェーダーやシーケンスを作らせてみた #CEDEC2024 #classmethod_game
ゲームソリューション部の えがわ です。
CEDEC2024に現地参加してきましたので、セッションレポートを書いていきます。
今回は「ChatGPTに内製エンジンのシェーダーやシーケンスを作らせてみた」の概要をお伝えします。
セッション概要
近年AIの進化が目覚ましく、ゲーム開発の現場でもAIの活用が求められるようになってきました。
この状況に対して、私たちは内製エンジンの使い方をAIに回答させたり、AIでシェーダーやシーケンスなどのグラフ構造を持ったゲームデータを生成させたりする取り組みをしました。
本セッションでは内製エンジンの使い方をどのようにAIに学習させ、ゲーム開発者に対してどのようなAIサポートができるようになったかを説明します。
セッション内容
ChatGPTではUnityやUnrealEngineの質問はチューニングなしで答えられますが、内製エンジンは情報が閉じているため、ChatGPTが学習していません。
まず、対応目標として以下を挙げられています。
- 内製エンジン「Luminous Engine」の使い方を回答できるようにする
- 内製エンジンのデータを作成できるようにする
システム構成
まず、ChatGPTを使用するためのシステム構成を作成する。
チャット動作環境
内製エンジンツールとSlackからAzure OpenAIを使用し、入出力を行っている。
Azure Functionsで認証やチャット処理を実装している。
エンジン情報のアップロード
エンジン情報は以下の2つを使用している。
- Confluenceで作成したエンジンのドキュメント
- エンジンチームとゲーム開発チームのSlackでのやりとり
ConfluenceとSlackの情報をJenkinsで毎日アップロードしている。
RAG(検索拡張生成)
通常のチャットではLLMが学習していないことは回答できない。
ファインチューニングには時間とコストがかかるため今回は見送り。
これを解決する効果的な方法がRAG。
質問をChatGPTに投げる前にドキュメントの全文検索を行い、結果を取得する。
取得した結果を基にChatGPTが回答することができる。
システム構成全体像
RAG用のデータはJenkinsがストレージに保存し、PDFや画像の解析も可能としている。
AIチャットツール(ひすいちゃん)の作成
システムメッセージでキャラ付けを行っている。
5歳の女子という設定にすることで、間違った回答を行っても許容してもらいやすいといった効果もある。
リアクション
答えられないときはリアクションだけ行う。
泣きアイコンだけを指定したはずが、考え中も使うようになるのが面白い。
メンション
回答できないときは担当者をメンションする。
関係ない人を含めた大量にメンションすることもありますが、5歳の女の子だったらしょうがない!
AIチャットツールのまとめ
Slackのやりとりを学んでどんどん学習する。
誰も読まないドキュメントは書く気が失せるが、ひすいちゃんだけは見てくれるのでモチベーションになる。
エンジンデータの作成
学習データについて
実際に使用している既存のデータを学習したほうが良いため、サンプルデータやプロジェクトのデータを学習に使用する。
課題
シェーダーグラフをAI生成する課題として、出力トークンの制限がネックになっている。
可読性をできるだけ維持したままPythonのコードを短くする対応を行うことで、30 ~ 40%の削減が可能。
生成精度向上について
GPT4 Omniで入出力トークン数が増え、出力も高速化されている。
AIが間違っていても否定するのではなく、AIに歩み寄り、学習のためのサンプルを見直すことが重要。
エディタに組み込む
エディタにAIを組み込み、ユーザーがAIと直接会話できるようにしている。
生成されたPythonコードはボタン一つで実行でき、その結果としてVFXやUI、シェーダーグラフの作成も可能。
さらに、UndoやRedoの機能もサポートしており、作業の柔軟性と効率性が大幅に向上している。
さいごに
本セッションを通じて、生成AIのゲーム開発への応用がますます進化していることを実感しました。
特に印象的だったのは、ドキュメントとSlackの情報を毎日学習することで、AIが継続的に進化していく点です。
従来のドキュメントだけでなく、実際のやりとりが含まれるSlackの情報も学習対象にすることで、より現実的で実用的な知識をAIが獲得できるというアプローチは目からうろこでした。